public class Day03 {
    public static void main(String[] args) {
//        Double d = true ? new Integer(1): new Double(2);
        byte c = 127;
        byte d = 126;
//        c = c + d;//error
        byte a = 127;
        byte b = 126;
        b += a;
    }

    // 移除元素
    public int removeElement(int[] nums, int val) {
        int size = 0;
        for(int i = 0; i < nums.length; i++) {
            if(nums[i] != val) {
                nums[size] = nums[i];
                size++;
            }
        }
        return size;
    }

    // 罗马数字转整数
    public int romanToInt(String s) {
        char[] types = {'I', 'V', 'X', 'L', 'C', 'D', 'M'};// 总共的类型
        int[] nums = {1, 5, 10, 50, 100, 500, 1000};// 该类型所对应的值
        char[] special = {'I', 'X', 'C'}; // 这些是要判断过的
        int ret = 0;
        for(int i = 0; i < s.length(); i++) {
            char key = s.charAt(i);
            int typesIndex = getIndex(types, key);
            int specialIndex = getIndex(special, key);
            if(specialIndex == -1 || i == s.length() - 1) {
                // 可以直接加
                ret += nums[typesIndex];
            } else {
                /*
                    观察发现
                        I 后面两个是 V X
                        X 后面两个是 L C
                        C 后面两个是 D M
                    所以可以通过 typesIndex  +1/+2 来判断后面那个是不是比它大
                */
                int nextIndex = getIndex(types, s.charAt(i + 1));
                if(nextIndex > typesIndex) {
                    // 那么就是用来减
                    ret += nums[nextIndex] - nums[typesIndex];
                    i++;// 因为已经判断过后面那个元素了
                } else {
                    ret += nums[typesIndex];
                }

            }
        }
        return ret;
    }

    private int getIndex(char[] types, char key) {
        for(int i = 0; i < types.length; i++) {
            if(types[i] == key) {
                return i;
            }
        }
        return -1;
    }
}
